{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "38df9aa0",
   "metadata": {},
   "source": [
    "# Quantum Kernel Training for Machine Learning Applications\n",
    "\n",
    "In this tutorial, we will train a quantum kernel on a labeled dataset for a machine learning application. To illustrate the basic steps, we will use Quantum Kernel Alignment (QKA) for a binary classification task. QKA is a technique that iteratively adapts a parametrized quantum kernel to a dataset while converging to the maximum SVM margin. More information about QKA can be found in the preprint, [\"Covariant quantum kernels for data with group structure.\"](https://arxiv.org/abs/2105.03406)\n",
    "\n",
    "\n",
    "The entry point to training a quantum kernel is the `QuantumKernelTrainer` class. The basic steps are:\n",
    "\n",
    "1. Prepare the dataset\n",
    "2. Define the quantum feature map\n",
    "3. Set up an instance of `TrainableKernel` and `QuantumKernelTrainer` objects\n",
    "4. Use the `QuantumKernelTrainer.fit` method to train the kernel parameters on the dataset\n",
    "5. Pass the trained quantum kernel to a machine learning model"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed6aafa9",
   "metadata": {},
   "source": [
    "### Import Local, External, and Qiskit Packages and define a callback class for our optimizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1a646351",
   "metadata": {},
   "outputs": [],
   "source": [
    "# External imports\n",
    "from pylab import cm\n",
    "from sklearn import metrics\n",
    "import numpy as np\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Qiskit imports\n",
    "from qiskit import QuantumCircuit\n",
    "from qiskit.circuit import ParameterVector\n",
    "from qiskit.visualization import circuit_drawer\n",
    "from qiskit.circuit.library import zz_feature_map\n",
    "from qiskit_machine_learning.optimizers import SPSA\n",
    "from qiskit_machine_learning.kernels import TrainableFidelityQuantumKernel\n",
    "from qiskit_machine_learning.kernels.algorithms import QuantumKernelTrainer\n",
    "from qiskit_machine_learning.algorithms import QSVC\n",
    "from qiskit_machine_learning.datasets import ad_hoc_data\n",
    "\n",
    "\n",
    "class QKTCallback:\n",
    "    \"\"\"Callback wrapper class.\"\"\"\n",
    "\n",
    "    def __init__(self) -> None:\n",
    "        self._data = [[] for i in range(5)]\n",
    "\n",
    "    def callback(self, x0, x1=None, x2=None, x3=None, x4=None):\n",
    "        \"\"\"\n",
    "        Args:\n",
    "            x0: number of function evaluations\n",
    "            x1: the parameters\n",
    "            x2: the function value\n",
    "            x3: the stepsize\n",
    "            x4: whether the step was accepted\n",
    "        \"\"\"\n",
    "        self._data[0].append(x0)\n",
    "        self._data[1].append(x1)\n",
    "        self._data[2].append(x2)\n",
    "        self._data[3].append(x3)\n",
    "        self._data[4].append(x4)\n",
    "\n",
    "    def get_callback_data(self):\n",
    "        return self._data\n",
    "\n",
    "    def clear_callback_data(self):\n",
    "        self._data = [[] for i in range(5)]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39535c04",
   "metadata": {},
   "source": [
    "### Prepare the Dataset\n",
    "\n",
    "In this guide, we will use Qiskit Machine Learning's `ad_hoc.py` dataset to demonstrate the kernel training process. See the documentation [here](https://qiskit-community.github.io/qiskit-machine-learning/stubs/qiskit_machine_learning.datasets.ad_hoc_data.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2311cff1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhsAAAHDCAYAAACNothiAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAASUBJREFUeJzt3Ql8VNX5//FnAhLWhEQWQdkUFBAFcUOsigqCElGsohb+xaUWrVqV2ipitVoW26o/tbQWFaEtWkXKVlJFsILVIooKGkUBRaCKgoKERUJD7v/1PTDjTEhCtjvb/bxfryHMvSczd5bMfeac5zwn5HmeZwAAAD7J8OuGAQAAhGADAAD4imADAAD4imADAAD4imADAAD4imADAAD4imADAAD4imADAAD4imADAAD4imAjRUyZMsVCoZB9+umnFba74oorrHHjxpbMdIzt27e3IHrhhResR48eVr9+ffd6fvPNNwk9noULF7rj0M9E0f3/6le/itn25ptvWu/eva1Ro0Zu/7Jly1wb/T/e9Den+9XfIIDqIdiIsz/+8Y/ug+vkk09O9KGkpHHjxtmsWbMsGXzwwQfuBHigADDs66+/tiFDhliDBg3sD3/4g/31r391J1PE+t///meXXHKJbd682f7v//7PPU/t2rXz/X6ffvppe+ihh3y/HyCI6ib6AILmqaeect/q33jjDVu9erV17Ngx0YeUcsHGxRdfbBdeeGFSBBv33HOP9enTp1I9Nfq2vm3bNvv1r39tffv2jcsxpoJvv/3W6tb97qPo448/trVr19rjjz9uP/rRjyLb77zzTrv99tt9DTYKCgrs5ptvjtmuQEfHeNBBB/l230C6o2cjjtasWWP/+c9/7MEHH7TmzZu7wAPBsXHjRvezadOmtXabO3bssFSnIaXoYKO850lt1Dbe1BOp+61Tp07c7xtIFwQbcaTgIicnxwYOHOi+nZcXbLz//vt21llnue72ww47zMaMGWMlJSVVuq/PPvvMfftX/oYCm1tvvdX27Nmz34nqZz/7mbVp08YyMzPtqKOOsvvvv9/KWgh46tSpdtJJJ1nDhg3dYzj99NPtxRdfPOBxaMijW7du7sNaP2fOnFlmO92vxugPPvhg97iPP/54mz59+n4f+jrmP//5z+7/uij/Q/RN+Cc/+Yl7DPp93Y664ksPcaiLXr0RnTp1csek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UJq++uqrr5ZZXEzDJnrtNYykoRP1jqjnqXRugXo/zj77bJdIq+dUuSTqodOxa+hKdDLWSV35ErpN/R2oKqhuszZOyJV5byqxVfkR6vVSMrSCWr1Pygq29J549tln3RRZTblVIKq/k7JoyqwCcg3Zaep4eOqr3n+l13kBwNRX351//vle/fr1vR07dpTb5oorrvAOOugg76uvvnLX3333Xe+MM85wv3fooYd6v/71r71JkyZVeuqrpoeWVnraoGzbts275ZZbvNatW7v717ROTWUsa0rrk08+6abPZmZmejk5Oe74wtN4K/L3v//d69Kli/u9rl27ejNmzHDHWHqKoR6f7l/tOnfu7KYZlnXMH374oXf66ad7DRo0cPvC02A1FfPKK6/0mjVr5jVu3Njr37+/a6v7iZ4qq6m+J510kte0aVN3G7qvsWPHuimo0T7++GM3hfGQQw5xz41eh7y8PG/69Okx7R5//HHv8MMP9+rUqXPAabBlTX0Ne/bZZyPPb25urjd06FDvv//9b6Ve24poqqoeR/Pmzd1t61ivv/56r6ioqNyprx988IHXt29f9zzq+bzmmmvctM7o6Z96r+p29PzpmDQ1++STT/amTZsWuZ23337bu/zyy722bdu6+9ZUUT2HmgZeG1NfK/vefO2117xevXq511vv9V/84hfevHnz9nvc27dv937wgx+490b09Oyypr7KggULvFNPPdXdblZWlvtb13NX1jFv2rSpzPfCgf6egXQR0j+JDngAAED6ImcDAAD4imADAAD4imADAAD4imADAAD4imADAAD4imADAACkV1EvVfr7/PPPXaXB2ij3DABIHaq2oAJvKrxWm+v8qFqwH6sLo3xa+bmyr2Hcgw0FGlqZEwAQXOvXr6/UCsaVCV602nBNlg1A9SjQUBVnBR1JF2yEF/0aaodaPUZxauwr62z/sOn22GNa8nr//Vor6sc/NjvfLrZmtneRNQBIlN1WYk/ZZzELQNZEONDQMgENGzakxzzOoxRaAqFt27YHfN7jHmyED0iBBsFGzR1kB5lZlh1/vFnPnvvvD6/irXY83wCSRW0EBRo6CQcapddBgv+0rpcCjuLiYrfOU0VYiC2AWnRsb5lNyl8Cu2jbDtu4+lNLVSHzrJMVWZbtsUKrY6ss0zzj2w6QbsI5GurRQPyFh08U9BFsYL9A495V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bY+0AwAgwAg2qkGzTpyCgrIb7NseaQcAQIARbFSDprdq1ok3ZoxZ6cWQSkrMGzvW7Vc7AACCrlrBxh/+8Adr37691a9f304++WR74403LEhUR0PTWy0/37xBg2Jmo7jr+fluP/U2AACoRrDx7LPP2siRI+3uu++2t99+27p37279+/e3jRs3WpCojsZEa25b5i0w693bLCvL/dR1bafOBgAAe4U8z6vS/Ez1ZJx44ok2YcIEd72kpMTatGljN954o91+++0H/P3CwkLLzs62K62N1UuDURwqiAJA5e22Epts623r1q2WpS9pCIQqVRDdvXu3vfXWWzZq1KjItoyMDOvbt68t1lBCGYqKitwlTG8wd1tWKtchhRVYvahrit2orwEAZQl/9lfxey6CFGx89dVXtmfPHmvZsmXMdl3/8MMPy/yd8ePH2z333LPf9qfss6oeKwAgTWzbts31ciMYfF8bRb0gyvEI++abb6xdu3a2bt26wLzRNHSkoab169cHptuQxxyMxxzUx81jrv5jVo+GAo3WrVvX6vEhjYKNZs2aWZ06dezLL7+M2a7rhxxySJm/k5mZ6S6lKdAIyh9pmB4vjzn9BfExB/Vx85irJyhfNPGdKmVo1qtXz44//nh76aWXItuUIKrrp5xySlVuCgAABESVh1E0JDJ8+HA74YQT7KSTTrKHHnrIduzYYVdeeaU/RwgAAIIVbFx66aW2adMmu+uuu+yLL76wHj162AsvvLBf0mh5NKSiGh1lDa2kKx5zMATxMQf1cfOYAZ/rbAAAAFRF6lfVAgAASY1gAwAA+IpgAwAA+IpgAwAApE+wEbSl6V955RU7//zzXaW8UChks2bNsnSn8vRaqK9JkybWokULu/DCC+2jjz6ydPboo4/ascceGyl2pJozzz//vAXJfffd597jN998s6WzX/3qV+5xRl86d+5s6e6zzz6zYcOG2cEHH2wNGjSwY445xpYuXZrow0IKiVuwEcSl6VV/RI9TQVZQLFq0yK6//np7/fXXbf78+fa///3PzjnnHPdcpKvDDjvMnWy1SKE+gM866yy74IIL7P3337cgePPNN23ixIku4AqCo48+2jZs2BC5vPrqq5bOtmzZYqeeeqoddNBBLoj+4IMP7IEHHrCcnJxEHxpSiRcnJ510knf99ddHru/Zs8dr3bq1N378eC8I9FTPnDnTC5qNGze6x75o0SIvSHJycrwnnnjCS3fbtm3zOnXq5M2fP98744wzvJtuuslLZ3fffbfXvXt3L0huu+0273vf+16iDwMpLi49G+Gl6bUUfWWXpkd62Lp1q/uZm5trQaBVkZ955hnXkxOEEv7qxRo4cGDM33a6W7VqlRsaPfzww23o0KFuUcl0NmfOHFcx+pJLLnFDo8cdd5w9/vjjiT4spJi4BBsVLU2vKqRIT1o3R2P46oLt1q2bpbP33nvPGjdu7KorXnvttTZz5kzr2rWrpTMFVRoSVZ5OUCjXbMqUKa5qsnJ11qxZY6eddppbxTRdffLJJ+6xdurUyebNm2fXXXed/fSnP7U///nPiT40pBDfl5hHcOlbb0FBQdqPactRRx1ly5Ytcz0506dPd+sHKX8lXQMOLTN+0003ubwcJXwHxbnnnhv5v3JUFHy0a9fOpk2bZldffbWl65cG9WyMGzfOXVfPhv6u//SnP7n3OZA0PRvVWZoeqe2GG26wuXPn2ssvv+wSKNOdVkTu2LGjWxVZ3/SVGPzwww9butKwqJK7e/bsaXXr1nUXBVePPPKI+796MoOgadOmduSRR9rq1astXbVq1Wq/oLlLly5pP3yEFAw2WJo+OJQLq0BDwwj/+te/rEOHDhZEen8XFRVZujr77LPd0JF6c8IXfftVDoP+ry8XQbB9+3b7+OOP3Qk5XWkYtPT09ZUrV7oeHSDphlGCuDS9Poiiv/FofFcfxEqWbNu2raXr0MnTTz9ts2fPdrU2wjk52dnZbn5+Oho1apTrXtdrqrF7Pf6FCxe68e10pde2dB5Oo0aNXB2GdM7PufXWW13tHJ1oP//8czeVX4HV5Zdfbunqlltusd69e7thlCFDhrj6SI899pi7AJUWz6kvv//97722bdt69erVc1NhX3/9dS+dvfzyy27aZ+nL8OHDvXRV1uPVZfLkyV66uuqqq7x27dq593Xz5s29s88+23vxxRe9oAnC1NdLL73Ua9WqlXutDz30UHd99erVXrr7xz/+4XXr1s3LzMz0Onfu7D322GOJPiSkGJaYBwAAvmJtFAAA4CuCDQAA4CuCDQAA4CuCDQAA4CuCDQAA4CuCDQAA4CuCDQAA4CuCDQAA4CuCDQAA4CuCDQAA4CuCDQAA4CuCDQAAYH76/3PDHKY7qYPCAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "adhoc_dimension = 2\n",
    "X_train, y_train, X_test, y_test, adhoc_total = ad_hoc_data(\n",
    "    training_size=20,\n",
    "    test_size=5,\n",
    "    n=adhoc_dimension,\n",
    "    gap=0.3,\n",
    "    plot_data=False,\n",
    "    one_hot=False,\n",
    "    include_sample_total=True,\n",
    ")\n",
    "\n",
    "plt.figure(figsize=(5, 5))\n",
    "plt.ylim(0, 2 * np.pi)\n",
    "plt.xlim(0, 2 * np.pi)\n",
    "plt.imshow(\n",
    "    np.asmatrix(adhoc_total).T,\n",
    "    interpolation=\"nearest\",\n",
    "    origin=\"lower\",\n",
    "    cmap=\"RdBu\",\n",
    "    extent=[0, 2 * np.pi, 0, 2 * np.pi],\n",
    ")\n",
    "\n",
    "plt.scatter(\n",
    "    X_train[np.where(y_train[:] == 0), 0],\n",
    "    X_train[np.where(y_train[:] == 0), 1],\n",
    "    marker=\"s\",\n",
    "    facecolors=\"w\",\n",
    "    edgecolors=\"b\",\n",
    "    label=\"A train\",\n",
    ")\n",
    "plt.scatter(\n",
    "    X_train[np.where(y_train[:] == 1), 0],\n",
    "    X_train[np.where(y_train[:] == 1), 1],\n",
    "    marker=\"o\",\n",
    "    facecolors=\"w\",\n",
    "    edgecolors=\"r\",\n",
    "    label=\"B train\",\n",
    ")\n",
    "plt.scatter(\n",
    "    X_test[np.where(y_test[:] == 0), 0],\n",
    "    X_test[np.where(y_test[:] == 0), 1],\n",
    "    marker=\"s\",\n",
    "    facecolors=\"b\",\n",
    "    edgecolors=\"w\",\n",
    "    label=\"A test\",\n",
    ")\n",
    "plt.scatter(\n",
    "    X_test[np.where(y_test[:] == 1), 0],\n",
    "    X_test[np.where(y_test[:] == 1), 1],\n",
    "    marker=\"o\",\n",
    "    facecolors=\"r\",\n",
    "    edgecolors=\"w\",\n",
    "    label=\"B test\",\n",
    ")\n",
    "\n",
    "plt.legend(bbox_to_anchor=(1.05, 1), loc=\"upper left\", borderaxespad=0.0)\n",
    "plt.title(\"Ad hoc dataset for classification\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "41a439be",
   "metadata": {},
   "source": [
    "### Define the Quantum Feature Map\n",
    "\n",
    "Next, we set up the quantum feature map, which encodes classical data into the quantum state space. Here, we use a `QuantumCircuit` to set up a trainable rotation layer and a `zz_feature_map` from `Qiskit` to represent the input data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "60b58ede",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     ┌──────────┐┌───┐┌─────────────┐                                          »\n",
      "q_0: ┤ Ry(θ[0]) ├┤ H ├┤ P(2.0*x[0]) ├──■────────────────────────────────────■──»\n",
      "     ├──────────┤├───┤├─────────────┤┌─┴─┐┌──────────────────────────────┐┌─┴─┐»\n",
      "q_1: ┤ Ry(θ[0]) ├┤ H ├┤ P(2.0*x[1]) ├┤ X ├┤ P(2.0*(x[0] - π)*(x[1] - π)) ├┤ X ├»\n",
      "     └──────────┘└───┘└─────────────┘└───┘└──────────────────────────────┘└───┘»\n",
      "«     ┌───┐┌─────────────┐                                          \n",
      "«q_0: ┤ H ├┤ P(2.0*x[0]) ├──■────────────────────────────────────■──\n",
      "«     ├───┤├─────────────┤┌─┴─┐┌──────────────────────────────┐┌─┴─┐\n",
      "«q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ X ├┤ P(2.0*(x[0] - π)*(x[1] - π)) ├┤ X ├\n",
      "«     └───┘└─────────────┘└───┘└──────────────────────────────┘└───┘\n",
      "Trainable parameters: θ, ['θ[0]']\n"
     ]
    }
   ],
   "source": [
    "# Create a rotational layer to train. We will rotate each qubit the same amount.\n",
    "training_params = ParameterVector(\"θ\", 1)\n",
    "fm0 = QuantumCircuit(2)\n",
    "fm0.ry(training_params[0], 0)\n",
    "fm0.ry(training_params[0], 1)\n",
    "\n",
    "# Use ZZFeatureMap to represent input data\n",
    "fm1 = zz_feature_map(2)\n",
    "\n",
    "# Create the feature map, composed of our two circuits\n",
    "fm = fm0.compose(fm1)\n",
    "\n",
    "print(circuit_drawer(fm))\n",
    "print(f\"Trainable parameters: {training_params}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "54ae41ca",
   "metadata": {},
   "source": [
    "### Set Up the Quantum Kernel and Quantum Kernel Trainer\n",
    "\n",
    "To train the quantum kernel, we will use an instance of `TrainableFidelityQuantumKernel` (holds the feature map and its parameters) and `QuantumKernelTrainer` (manages the training process).\n",
    "\n",
    "We will train using the Quantum Kernel Alignment technique by selecting the kernel loss function, `SVCLoss`, as input to the `QuantumKernelTrainer`. Since this is a Qiskit-supported loss, we can use the string, `\"svc_loss\"`; however, note that default settings are used when passing the loss as a string. For custom settings, instantiate explicitly with the desired options, and pass the `KernelLoss` object to the `QuantumKernelTrainer`.\n",
    "\n",
    "We will select SPSA as the optimizer and initialize the trainable parameter with the `initial_point` argument. Note: The length of the list passed as the `initial_point` argument must equal the number of trainable parameters in the feature map."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a190efef",
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit_machine_learning.state_fidelities import ComputeUncompute\n",
    "from qiskit.primitives import StatevectorSampler as Sampler\n",
    "\n",
    "sampler = Sampler()\n",
    "fidelity = ComputeUncompute(sampler=sampler)\n",
    "\n",
    "# Instantiate quantum kernel\n",
    "quant_kernel = TrainableFidelityQuantumKernel(\n",
    "    fidelity=fidelity, feature_map=fm, training_parameters=training_params\n",
    ")\n",
    "\n",
    "# Set up the optimizer\n",
    "cb_qkt = QKTCallback()\n",
    "spsa_opt = SPSA(maxiter=10, callback=cb_qkt.callback, learning_rate=0.05, perturbation=0.05)\n",
    "\n",
    "# Instantiate a quantum kernel trainer.\n",
    "qkt = QuantumKernelTrainer(\n",
    "    quantum_kernel=quant_kernel, loss=\"svc_loss\", optimizer=spsa_opt, initial_point=[np.pi / 2]\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6f4fd48",
   "metadata": {},
   "source": [
    "### Train the Quantum Kernel\n",
    "\n",
    "To train the quantum kernel on the dataset (samples and labels), we call the `fit` method of `QuantumKernelTrainer`.\n",
    "\n",
    "The output of `QuantumKernelTrainer.fit` is a `QuantumKernelTrainerResult` object. The results object contains the following class fields:\n",
    "\n",
    " - `optimal_parameters`: A dictionary containing {parameter: optimal value} pairs\n",
    " - `optimal_point`: The optimal parameter value found in training\n",
    " - `optimal_value`: The value of the loss function at the optimal point\n",
    " - `optimizer_evals`: The number of evaluations performed by the optimizer\n",
    " - `optimizer_time`: The amount of time taken to perform optimization\n",
    " - `quantum_kernel`: A `TrainableKernel` object with optimal values bound to the feature map"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9d26212c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{   'optimal_circuit': None,\n",
      "    'optimal_parameters': {   ParameterVectorElement(θ[0]): np.float64(1.6621004871483862)},\n",
      "    'optimal_point': array([1.66210049]),\n",
      "    'optimal_value': np.float64(17.26091701512767),\n",
      "    'optimizer_evals': 30,\n",
      "    'optimizer_result': None,\n",
      "    'optimizer_time': None,\n",
      "    'quantum_kernel': <qiskit_machine_learning.kernels.trainable_fidelity_quantum_kernel.TrainableFidelityQuantumKernel object at 0x0000017A681575F0>}\n"
     ]
    }
   ],
   "source": [
    "# Train the kernel using QKT directly\n",
    "qka_results = qkt.fit(X_train, y_train)\n",
    "optimized_kernel = qka_results.quantum_kernel\n",
    "print(qka_results)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5455be3c",
   "metadata": {},
   "source": [
    "### Fit and Test the Model\n",
    "\n",
    "We can pass the trained quantum kernel to a machine learning model, then fit the model and test on new data. Here, we will use Qiskit Machine Learning's `QSVC` for classification."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e716655f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy test: 1.0\n"
     ]
    }
   ],
   "source": [
    "# Use QSVC for classification\n",
    "qsvc = QSVC(quantum_kernel=optimized_kernel)\n",
    "\n",
    "# Fit the QSVC\n",
    "qsvc.fit(X_train, y_train)\n",
    "\n",
    "# Predict the labels\n",
    "labels_test = qsvc.predict(X_test)\n",
    "\n",
    "# Evalaute the test accuracy\n",
    "accuracy_test = metrics.balanced_accuracy_score(y_true=y_test, y_pred=labels_test)\n",
    "print(f\"accuracy test: {accuracy_test}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9cd4cbf2",
   "metadata": {},
   "source": [
    "### Visualize the Kernel Training Process\n",
    "\n",
    "From the callback data, we can plot how the loss evolves during the training process. We see it converges rapidly and reaches high test accuracy on this dataset with our choice of inputs.\n",
    "\n",
    "We can also display the final kernel matrix, which is a measure of similarity between the training samples."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0cb85c46",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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uO37WkS9YcOG5nYgFG3evFnq168v165dk2TJksn3339vEmvR0dtdbE0/os4+S548eYxx3bp1M/VPXReWigJA8PBZUk2TZbr8a8WKFWZbl3pq4mzs2LGmK51edFsTbhkzZjQxK1eudNdhAhD4XK/nmTNnUs8nnrhmqenyrqjLUACEFq2r2L59+2jfe13f69Chg4kDQol289TmaHryX08ATp482ZzYj0nq1Km9WtKpzp8/79VSUT3xlSZNmpsuAIDg4LOk2sSJE2X58uVmOecLL7wgu3fvli+//FKaNm3q7vSp27osVG976aWXzIc8/ZlJkyb5ahgAHFStWjVJkSKFOQP7559/Oj2ckKAnLBRLP4HQtmzZspsKrN9KP3Ppe7PGAaHi8OHD8vjjj5trPUYZPXq09YR+1OYEnl5TKuqMs6hNCwAAocOnSTWly4/Gjx9/01meW+mZnG+++cbE6oe8CRMm+GoYABykSx9cxfJnzJjh9HCCntZv0RoxiiYFQGg7cuSIT+OAQHfixAlT31VP5qvBgwebE/w2WvvZZdu2bR5jo95epEiRuxovACDEGxVopyk9A9SuXTuvf0abFegBITNagOChZ4C1bo/WVfvwww+dHk5Q0xknmljLkSOHPPDAA04PB4CDtMunL+OAQKZ1y3QGt6tp2meffSavv/66Vz+bL18+yZ49u5nd5jpxFZNff/3VXOvf4bx588Z6nCdPinjq2daos33229q19vuZNcse89FH9phx4+wxBQqIV376yR7Ttq095to1e0yJEvaYwYPtMd40UfamseuuXfaYH36wx0RZfRyjHj3sMevX++b3mijiqnflCpKmsMb0znvBGlOmjP2+8q35zRpz9Kh9Pzly2GNu5O89ql3bHpN8kH1G+cWipa0xdd783SevsZQN69iDRKRZM3tM48b2mAED7DHp0sU8gctl5kz7fmyHT1ev6ozleJypdurUKfcfIm+5Yl0/CyDwPfXUU6ZmyYYNG0wdE8SdqF0/6aQMhDatq6jL1mJ6L9Dv6/I0jQOC2YULF8xnET3hr9577z3p0qWL1z+vrxXXElGdibZ69epo4/T7rplqGs/fYQAITT5LqqVNm9Zc61kdb7mWIFCsEwge2oikQoUK7oYFiJ+kGoDQpiczPv/8c7Md3cG9ltsYNGiQiQOClXbr1C6f2jhNafOOjz/+ONb7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",
      "text/plain": [
       "<Figure size 1400x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_data = cb_qkt.get_callback_data()  # callback data\n",
    "K = optimized_kernel.evaluate(X_train)  # kernel matrix evaluated on the training samples\n",
    "\n",
    "plt.rcParams[\"font.size\"] = 20\n",
    "fig, ax = plt.subplots(1, 2, figsize=(14, 5))\n",
    "ax[0].plot([i + 1 for i in range(len(plot_data[0]))], np.array(plot_data[2]), c=\"k\", marker=\"o\")\n",
    "ax[0].set_xlabel(\"Iterations\")\n",
    "ax[0].set_ylabel(\"Loss\")\n",
    "ax[1].imshow(K, cmap=matplotlib.colormaps[\"bwr\"])\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "aa6e50bc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Software</th><th>Version</th></tr><tr><td><code>qiskit</code></td><td>1.4.3</td></tr><tr><td><code>qiskit_machine_learning</code></td><td>0.9.0</td></tr><tr><th colspan='2'>System information</th></tr><tr><td>Python version</td><td>3.12.9</td></tr><tr><td>OS</td><td>Windows</td></tr><tr><td colspan='2'>Fri Jul 18 15:30:57 2025 Eastern Daylight Time</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of a Qiskit project</h3><p>&copy; Copyright IBM 2017, 2025.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import tutorial_magics\n",
    "\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.9"
  },
  "rise": {
   "height": "90%",
   "scroll": true,
   "start_slideshow_at": "beginning",
   "theme": "white",
   "transition": "zoom",
   "width": "90%"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
